

80277ee0: 3c 01 1f ff  LUI at, 0x1fff
80277ee4: 34 21 ff ff  ORI at, at, 0xffff      ;at = 1fffffff
80277ee8: 00 a1 70 24  AND t6, a1, at          ;t6 = a1 & at
80277eec: 3c 01 80 34  LUI at, 0x8034          ;at = 0x80340000
80277ef0: 00 04 78 80  SLL t7, a0, 0x2         ;t7 = a0 * 4
80277ef4: 00 2f 08 21  ADDU at, at, t7         ;at += t7
80277ef8: ac 2e b4 00  SW t6, at, 0xffffb400   ;*(at + 0xffffb400) = t6

80277efc: 00 04 c0 80  SLL t8, a0, 0x2         ;t8 = a0 * 4
80277f00: 3c 02 80 34  LUI v0, 0x8034 
80277f04: 00 58 10 21  ADDU v0, v0, t8         ;v0 = 0x80340000 + t8
80277f08: 03 e0 00 08  JR ra
80277f0c: 8c 42 b4 00  LW v0, v0, 0xffffb400   ;v0 = *(v0 + 0xffffb400);

/* 0x80277ee0 */
uint32 set_segment_base(int segment, void *base)
{
    *(segment*4 + 0x8033b400) = base & 0x1fffffff;
    return *(segment*4 +0x8033b400);
}















///// THE FOLLLOWING IS CRAP !!! /////


;at = 1fffffff                 
;t6 = a1 & at                ;t6 = a1 & 0x1fffffff

;t7 = a0 * 4
;at += t7                    ;at = (a0 * 4) + 0x1fffffff
;*(at + 0xffffb400) = t6     ;*((a0 * 4) + 0x1fffffff + 0xffffb400) = a1 & 0x1fffffff
;t8 = a0 * 4

;v0 = 0x80340000 + t8        ;v0 = (a0 * 4) + 0x80340000

;v0 = *(v0 + 0xffffb400);    ;return *((a0 * 4) + 0x80340000 + 0xffffb400)




;t6 = a1 & 0x1fffffff
;at = (a0 * 4) + 0x1fffffff
;*((a0 * 4) + 0x1fffffff + 0xffffb400) = a1 & 0x1fffffff ;*((a0*4) + 1FFFB3FF) = a1 & 0x1fffffff;
;v0 = (a0 * 4) + 0x80340000
;return *((a0 * 4) + 0x80340000 + 0xffffb400)            ;*((a0*4) + 0x8033B400);


0x80277ee0(arg1, arg2)
{
    *((arg1*4) + 1FFFB3FF) = arg2 & 0x1fffffff;
    return *((arg1*4) + 0x8033B400);
}